package com.book.controller.admin;

import com.book.pojo.Book;
import com.book.service.BookService;
import com.book.utils.FileUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.UUID;

@Controller
@RequestMapping("/admin/goods")
public class AdminGoodsController {

    @Autowired
    private BookService bookService;

    @GetMapping("/list")
    public String list(Model model){

        List<Book> bookList = bookService.list();

        model.addAttribute("bookList", bookList);

        return "admin/goods_list";
    }

    // 添加页面展示
    @GetMapping("/addShow")
    public String addShow(){
        return "admin/goods_add";
    }


    // 添加
    @PostMapping("/add")
    public String add(Book book, MultipartFile file){
        String imgFile = null;

        // 判断是否上传文件，未上传就使用默认图片，上传了给个随机图片名
        if(file.isEmpty()){
            imgFile = "mr.jpg";
        }else {
            // 生成新文件名
            String newFile = UUID.randomUUID() + "-" + file.getOriginalFilename();

            // 构建文件对象
            File f = new File(FileUtils.getFilePath(), newFile);

            // 判断上级目录是否存在，不存在就创建
            if( f.getParentFile().exists()){
                f.mkdirs();
            }

            try {
                file.transferTo(f);
                imgFile = newFile;
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        book.setImgUrl(imgFile);
        System.out.println(book);
        bookService.save(book);

        return "redirect:/admin/goods/list";
    }


    // 跳转到修改页面
    @GetMapping("/toUpdate/{id}")
    public String toUpdate(@PathVariable("id") Integer id, Model model){

        Book books = bookService.getById(id);

        model.addAttribute("books", books);

        return "admin/goods_update";
    }


    // 修改
    @PostMapping("/update")
    public String update(Book book, MultipartFile file){
        String imgFile = null;

        // 判断是否上传文件，未上传就使用默认图片，上传了给个随机图片名
        if(!file.isEmpty()){
            // 生成新文件名
            String newFile = UUID.randomUUID() + "-" + file.getOriginalFilename();

            // 构建文件对象
            File f = new File(FileUtils.getFilePath(), newFile);

            // 判断上级目录是否存在，不存在就创建
            if( f.getParentFile().exists()){
                f.mkdirs();
            }

            try {
                file.transferTo(f);
                imgFile = newFile;
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        book.setImgUrl(imgFile);
        bookService.updateById(book);
        return "redirect:/admin/goods/list";
    }
}
